|
Date : 6 d�cembre 1991 Protection : Programme : PERESTROIKA Outils : SOFT-ICE V2.50 Fichier : PERESTRO.EXE Temps pass� : 10 MINUTES Soci�t� : SHAREWARE Divers : Suppression du chant sovi�tique. Origine : N.T. Num�ro : 153 Un petit jeu en SHAREWARE d'origine SOVIETIQUE �crit en TURBO C ce qui prouve que le C peut parfaitement convenir � un jeu d'arcade aux performances honn�tes. Malheureusement ce dernier vous assomme avec un chant SOVIETIQUE impossible � "JUMPER" pendant le d�but du jeu et ce durant 15 secondes. Je n'ai rien contre les chants SOVIETIQUES mais celui-l� utilise le HP du PC pour s'exprimer ce qui est d'un effet plus que crispant lorsque l'on est habitu� aux chants harmonieux que dispense une SOUNDBLASTER. J'ai donc allum� SOFT-ICE pour faire une tr�panation en profondeur. Le fichier est comprim� par LZEXE version 0.9 - Il va falloir qu'ils rattrapent leur retard ! Dans l'ordre on trouve le CALLF qui affiche l'image d'entr�e: 1499:00xx 9A0D00C319 CALL 19C3:000D Puis celui qui prodigue le chant: 1499:00AA FF361C1C PUSH [1C1C] 1499:00AE 9A2908B40F CALL 0FB4:0829 1499:00B3 83C408 ADD SP,+8 En le supprimant par un EB03 ( et surtout pas par 5 NOP voir DLII.DEP ) ceci fonctionne avec toutefois un inconv�nient : l'image d'entr�e ne fait que passer, on saute directement dans le jeu. R�fl�chissons, on dispose de 5 octets. En y pla�ant une attente de CHAR par l'interm�diaire de l'INT 07 on en utilise que 4. On y rajoute un NOP et �a y est le trou est combl�. MOV AH,07 ; 2 octet INT 21h ; 2 octet NOP ; 1 octet La modif est faite et .... �a se plante. A chaque fois j'oublie la table de relocation des sauts inter-segments qui est cr�e lors du linkage du fichier OBJ en EXE. Cette table contient tous les sauts dont il faut adapter l'adresse CS en fonction de l'endroit de chargement du programme. J'ai supprim� le saut mais lors de l'installation du programme les derniers octets du saut sont �cras�s par la table de rellocation qui y met le d�placement figurant dans le HEADER de l'EXE. Je pourrais essayer de supprimer ce saut de la table mais c'est plus simple de sauter dans un COPYRIGHT quelconque d'y utiliser 5 octets et de revenir. On trouve dans le m�me SEGMENT ce qui �vite pas mal de gymnastique le COPYRIGHT de l'auteur ainsi que son adresse + num�ro de t�l�phone. C'est largement suffisant. L'adresse se situe en $ + BA0F = BAC0. 1499:BAC0 B407 MOV AH,7 ; Sous fonction attente de char. 1499:BAC2 CD21 INT 21 ; DOS CALL. 1499:BAC4 E9EC45 JMP 00B3 ; SAUT CORRIGE. Et en 1499:00AE E90FBA JMP BAC0 1499:00B1 XXYY ??? ; Octets mis en place par la ; table de saut. 1499:00B3 83C408 ADD SP,+8 ; On revient ici. Avec PCTOOLS chercher 2D2D2D2D2D2D2D et y placer B407CD21E9EC45 puis FF361C1C9A2908 en y pla�ant E90FBA � la place de 9A2908. FREDDY |